package reflection;

import org.junit.Test;

import java.lang.reflect.Field;

/**
 * @author 吴阳基
 * @datetime 2024/1/3 14:18
 */
public class ShiLi8 {
    @Test
    public void test() throws IllegalAccessException, ClassNotFoundException, InstantiationException, NoSuchFieldException {
        //通过反射加载一个Person实例
        Class<?> clz = Class.forName("reflection.Person");
        Object person = clz.newInstance();

        //获取private String name属性
        Field name = clz.getDeclaredField("name");
        //name属性为private，这里已超出其访问范围，不能直接访问
        //通过setAccessible方法，设定为可以访问
        name.setAccessible(true);
        //先取值看一下
        System.out.println("赋值前的name："+name.get(person));
        //为name属性赋值
        name.set(person,"new Person");
        //展示赋值效果
        System.out.println("赋值后的name："+name.get(person));
    }
}
